package org.dei.perla.utils.dataconverter.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.dei.perla.utils.dataconverter.enums.PaddingPosition;

/**
 * Annotazione per la memorizzazione di un array di dimensioni fisse.
 * Deve essere utilizzato in combinazione con le annotazioni SimpleField o CompositeField, 
 * le quali descrivono il tipo dei singoli elementi che compongono l'array. 
 * @author Guido Rota
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FixedLengthArray {

	/**
	 * Indica quanti elementi sono presenti in totale nell'array.
	 */
	int length();
	
	/**
	 * Indica se il padding deve essere inserito all'inizio prima o dopo
	 * gli elementi dell'array (nel caso vengano inseriti meno valori rispetto
	 * a quanto l'array ne puo' memorizzare al massimo)
	 */
	PaddingPosition paddingPosition() default PaddingPosition.AT_END;
	
	/**
	 * Contiene il carattere che deve essere utilizzato per il padding.
	 */
	byte padding() default 0;
}
